package com.dq.netty;

import com.dq.common.Message;
import com.dq.common.MessageType;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.channel.SimpleChannelInboundHandler;

/**
 * @Author: Dang Qi
 * @Date: 2021/5/11 14:09
 * @Description:
 */
public class NettyClientHandler extends SimpleChannelInboundHandler<Message> {

    //当通道就绪就会触发该方法
    @Override
    public void channelActive(ChannelHandlerContext ctx) throws Exception {
        //System.out.println("client " + ctx);
        //ctx.writeAndFlush(Unpooled.copiedBuffer("hello, server: (>^ω^<)喵", CharsetUtil.UTF_8));
        Message m = new Message();
        m.setMesType(MessageType.message_want_login);
        m.setSender(ClientNetty.qq);
        ctx.writeAndFlush(m);
    }

    //当通道有读取事件时，会触发
    @Override
    public void channelRead0(ChannelHandlerContext ctx, Message msg) throws Exception {
        //ByteBuf buf = (ByteBuf) msg;
        //System.out.println("服务器回复的消息:" + buf.toString(CharsetUtil.UTF_8));
        //System.out.println("服务器的地址： " + ctx.channel().remoteAddress());
        System.out.println(msg);
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        cause.printStackTrace();
        ctx.close();
    }

}